package com.yf.gogameserver.utils;/*
@author FAN
管理密码忘记工具类
@create 2021-12-22-14:24


*/

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;


public class MapCodeUtils {
    //验证码，和时间
    private static Map<String, List> codeMap = new ConcurrentHashMap<>();

    /**
     * 设置验证码
     *
     * @param Key
     * @param code
     */
    public static void putCode(String Key, String code) {
        //将验证码包装成list集合
        List List = new ArrayList();
        List.add(code);//验证码
        List.add(System.currentTimeMillis());//当前时间，毫秒值

        codeMap.put(Key, List);
    }

    /**
     * 获取验证码
     *
     * @return
     */
    public static String getCode(String Key) {
        //判断key是否存在
        if (codeMap.containsKey(Key)) {
            //验证码存在
            List valList = codeMap.get(Key);
            //获取验证码
            String code = (String) valList.get(0);
            //当初设置验证码时间
            long setTime = (long) valList.get(1);

            //判断时效性
            long nowTime = System.currentTimeMillis();
            //是否过期
            if (nowTime - setTime > 5 * 60 * 1000) {
                //移除当前过期验证码
                codeMap.remove(Key);
                //验证码时效性过
                return null;
            }
            return code;
        }
        //当key不存在
        return null;
    }

    /**
     * 移除验证码
     *
     * @param Key
     */
    public static void removeCode(String Key) {
        codeMap.remove(Key);
    }
}
